#ifndef _PANEL_H_
#define _PANEL_H_

#include <SFML/Graphics.hpp>
#include <memory>


///////////////////////////////////////////////////////
/// \brief Graphical displayable block
///
/// A panel is a graphical block that can be displayed
/// on a render window.
/// A panel can contain images, boutons, etc.
///
///////////////////////////////////////////////////////
class Panel
{
public:
    Panel(sf::RenderWindow* window,
          const sf::Vector2f& pos,
          const sf::Vector2f& size,
          const std::shared_ptr<sf::Sprite>& bg);

    virtual ~Panel();

    virtual void render() = 0;

protected:
    sf::RenderWindow* window_; ///< Window the panel will be rendered on
    std::shared_ptr<sf::Sprite> background_; ///< Background of the panel

    sf::Vector2f position_; ///< 2D position of the panel on the window
    sf::Vector2f size_; ///< Length and height of the panel
};


#endif /* _PANEL_H_ */
